package inner.anonymous;

public class Training {
    //匿名对象传参: 提高代码的简洁性(针对特例 更为灵活)

    public static void main(String[] args) {
        CellPhone phone1 = new CellPhone();
        phone1.alarmClock(new Bell() {//传递的参数是一个实现了Bell接口 并重写了该接口中的ring方法的匿名内部类
            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }
        });//懒猪起床了
        //编译类型是Bell 运行类型却是匿名内部类 触发动态绑定
        phone1.alarmClock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });//小伙伴上课了
    }
}

interface Bell {
    void ring();
}

class CellPhone {
    public void alarmClock(Bell bell) {
        bell.ring();
    }
}